package service.hansot;

import hansot.model.dao.HansotDAO;
import hansot.to.MemberTO;
import hansot.to.MenuTO;
import hansot.to.ZipcodeTO;

import java.sql.SQLException;
import java.util.ArrayList;

import member.exception.DuplicatedIdException;
import member.exception.DuplicatedNameException;

public class CustomerService {
	private HansotDAO dao;

	public CustomerService(HansotDAO dao) {
		this.dao = dao;
	}

	public void joinMember(MemberTO mto) throws SQLException {
		dao.insertMember(mto);
	}

	public ArrayList getZipcodeByDong(String dong) throws SQLException{
		return dao.selectAddressByDong(dong);
	}
	
	public ZipcodeTO getZipcodeBySeq(String seq) throws SQLException{
		return dao.selectAddressBySeq(seq);
	}
	
	public int idCheck(String memberId) throws SQLException{
		int a=0;
		if(dao.selectMemberById(memberId)!=null){
			a=1;
		}
		return a;
	}
	
	// 전체 메뉴 조회
	public ArrayList<MenuTO> getMenuList() throws SQLException {
		return dao.selectAllMenu();
	}

	// 이름으로 메뉴 조회
	public ArrayList<MenuTO> searchMenuByName(String name)
			throws SQLException {
		return dao.selectMenuByName(name);
	}

	// 메뉴 id로 조회해 주는 메소드.
	public MenuTO getMenuById(String id) throws SQLException {
		return dao.selectMenuById(id);
	}
	//메뉴 삽입
	public void joinMenu(MenuTO menuto) throws SQLException,
			DuplicatedIdException, DuplicatedNameException {
		// 1. 등록된 ID가 있는 지 체크
		// - 이미 등록된 ID라면 DuplicatedIdException를 발생 시킨다.
		if (dao.selectMenuById(menuto.getMenuId()) != null) {
			throw new DuplicatedIdException(menuto.getMenuId()
					+ "는 이미 등록된 아이디입니다. ID를 변경하세요");
		}
		menuto.setGrade(0);
		// 3. 디비에 회원정보 등록 처리
		dao.insertMenu(menuto);
	}

	// 메뉴 정보 수정처리
	public void modifyMenu(MenuTO menuto) throws SQLException,
			DuplicatedIdException {
		// update 처리
		dao.updateMenu(menuto);
	}
	// 회원 탈퇴
	public void removeMemberById(String id)throws SQLException{
		dao.deleteMemberById(id);
	}

	// 메뉴 삭제
	public void removeMenuById(String id) throws SQLException {
		dao.deleteMenuById(id);
	}

	public MemberTO selectMemberById(MemberTO mto) throws SQLException {
		return dao.selectMemberById(mto.getMemberId());
		
	}

	public void updateMember(MemberTO mto) throws SQLException {
		// TODO Auto-generated method stub
		dao.updateMember(mto);
	}

	public MemberTO searchMemberById(String id) throws SQLException {
		return dao.selectMemberById(id);
	}
	
	public ArrayList<MenuTO> gradeSearch() throws SQLException{
		return dao.gradeSeaech();
	}

}
